package macaddr

import (
	"net"
	"strings"

	"gitee.com/sillyman/simpleUtil/common/misc"
)

// Parse 解析字符串为MAC
// 使用以下格式之一：
//	00:00:5e:00:53:01
//	00-00-5e-00-53-01
//	0000.5e00.5301
//	0000-5e00-5301
//	00005e005301
func Parse(s string) MAC {
	sLen := len(s)
	switch {
	case sLen < 12:
		return nil

	case sLen == 12:
		maddr := make(MAC, 0, 6)
		for i := 0; i < 6; i++ {
			n, ok := misc.Hex2Int(s[i*2 : (i*2)+2])
			if !ok {
				return nil
			}
			maddr = append(maddr, byte(n))
		}
		return maddr

	default:
		if s[4] == '-' {
			s = strings.ReplaceAll(s, "-", ".")
		}
		hw, err := net.ParseMAC(s)
		if err != nil {
			return nil
		}
		return New(hw)
	}
}
